// Copyright (c) 2022 Presto Labs Pte. Ltd.
// Author: qiang

#pragma once

#include <memory>
#include <string>
#include <vector>

#include "coin2/exchange/base/api_base/asio_http_driver.h"
#include "coin2/exchange/base/order/processor.h"
#include "coin2/exchange/crypto_v1/api_order/native_private_client.h"

namespace coin2::exchange::crypto_v1::api_order {

class CryptoRestAsyncAsioSubscriber : public base::order::RestSubscriber {
 public:
  using RestParams = coin2::exchange::order::CryptoFuturesRestParams;
  using RestClient = CryptoV1NativePrivateClient;

 public:
  using RestSubscriber::RestSubscriber;
  auto rest_client() { return dynamic_cast<RestClient*>(rest_client_); }
  void QueryBalance();
  void QueryOpenOrders();
  void QueryHistOrders();
  void QueryTrades();
  void SubscribeAsync() override;
};

}  // namespace coin2::exchange::crypto_v1::api_order
